Skip to content

Conversation

@KyleAMathews
Copy link
Collaborator

  • Created dedicated pages for each collection type:

    • trailbase-collection.md
    • local-storage-collection.md
    • local-only-collection.md
    • derived-collections.md
  • Simplified overview.md Collections section:

    • Reduced from ~743 to 408 lines (45% reduction)
    • Replaced detailed content with brief one-sentence descriptions
    • Added links to individual collection type pages
  • Each collection page includes:

    • Overview and use cases
    • Installation instructions
    • Configuration options
    • Code examples
    • Complete working examples
    • Cross-references to related documentation

This makes the documentation more navigable and easier to maintain.

🤖 Generated with Claude Code

🎯 Changes

✅ Checklist

  • I have followed the steps in the Contributing guide.
  • I have tested this code locally with pnpm test:pr.

🚀 Release Impact

  • This change affects published code, and I have generated a changeset.
  • This change is docs/CI/dev-only (no release).

- Created dedicated pages for each collection type:
  - trailbase-collection.md
  - local-storage-collection.md
  - local-only-collection.md
  - derived-collections.md

- Simplified overview.md Collections section:
  - Reduced from ~743 to 408 lines (45% reduction)
  - Replaced detailed content with brief one-sentence descriptions
  - Added links to individual collection type pages

- Each collection page includes:
  - Overview and use cases
  - Installation instructions
  - Configuration options
  - Code examples
  - Complete working examples
  - Cross-references to related documentation

This makes the documentation more navigable and easier to maintain.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@changeset-bot
Copy link

changeset-bot bot commented Oct 27, 2025

⚠️ No Changeset found

Latest commit: 6cd0cdc

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Reorganized the collection types in overview.md into logical categories:
- Fetch Collections: QueryCollection
- Sync Collections: ElectricCollection, TrailBaseCollection, RxDBCollection
- Local Collections: LocalStorageCollection, LocalOnlyCollection
- Derived Collections: Derived Collections

This makes it easier to understand the different collection types at a glance.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@pkg-pr-new
Copy link

pkg-pr-new bot commented Oct 27, 2025

More templates

@tanstack/angular-db

npm i https://pkg.pr.new/@tanstack/angular-db@725

@tanstack/db

npm i https://pkg.pr.new/@tanstack/db@725

@tanstack/db-ivm

npm i https://pkg.pr.new/@tanstack/db-ivm@725

@tanstack/electric-db-collection

npm i https://pkg.pr.new/@tanstack/electric-db-collection@725

@tanstack/query-db-collection

npm i https://pkg.pr.new/@tanstack/query-db-collection@725

@tanstack/react-db

npm i https://pkg.pr.new/@tanstack/react-db@725

@tanstack/rxdb-db-collection

npm i https://pkg.pr.new/@tanstack/rxdb-db-collection@725

@tanstack/solid-db

npm i https://pkg.pr.new/@tanstack/solid-db@725

@tanstack/svelte-db

npm i https://pkg.pr.new/@tanstack/svelte-db@725

@tanstack/trailbase-db-collection

npm i https://pkg.pr.new/@tanstack/trailbase-db-collection@725

@tanstack/vue-db

npm i https://pkg.pr.new/@tanstack/vue-db@725

commit: 6cd0cdc

@github-actions
Copy link
Contributor

github-actions bot commented Oct 27, 2025

Size Change: 0 B

Total Size: 84.5 kB

ℹ️ View Unchanged
Filename Size
./packages/db/dist/esm/collection/change-events.js 1.63 kB
./packages/db/dist/esm/collection/changes.js 1.01 kB
./packages/db/dist/esm/collection/events.js 413 B
./packages/db/dist/esm/collection/index.js 3.23 kB
./packages/db/dist/esm/collection/indexes.js 1.16 kB
./packages/db/dist/esm/collection/lifecycle.js 1.8 kB
./packages/db/dist/esm/collection/mutations.js 2.52 kB
./packages/db/dist/esm/collection/state.js 3.8 kB
./packages/db/dist/esm/collection/subscription.js 2.2 kB
./packages/db/dist/esm/collection/sync.js 2.2 kB
./packages/db/dist/esm/deferred.js 230 B
./packages/db/dist/esm/errors.js 3.48 kB
./packages/db/dist/esm/event-emitter.js 798 B
./packages/db/dist/esm/index.js 1.62 kB
./packages/db/dist/esm/indexes/auto-index.js 857 B
./packages/db/dist/esm/indexes/base-index.js 835 B
./packages/db/dist/esm/indexes/btree-index.js 2 kB
./packages/db/dist/esm/indexes/lazy-index.js 1.21 kB
./packages/db/dist/esm/indexes/reverse-index.js 577 B
./packages/db/dist/esm/local-only.js 967 B
./packages/db/dist/esm/local-storage.js 2.42 kB
./packages/db/dist/esm/optimistic-action.js 294 B
./packages/db/dist/esm/proxy.js 3.86 kB
./packages/db/dist/esm/query/builder/functions.js 615 B
./packages/db/dist/esm/query/builder/index.js 4.04 kB
./packages/db/dist/esm/query/builder/ref-proxy.js 938 B
./packages/db/dist/esm/query/compiler/evaluators.js 1.55 kB
./packages/db/dist/esm/query/compiler/expressions.js 760 B
./packages/db/dist/esm/query/compiler/group-by.js 2.04 kB
./packages/db/dist/esm/query/compiler/index.js 2.21 kB
./packages/db/dist/esm/query/compiler/joins.js 2.65 kB
./packages/db/dist/esm/query/compiler/order-by.js 1.43 kB
./packages/db/dist/esm/query/compiler/select.js 1.28 kB
./packages/db/dist/esm/query/ir.js 785 B
./packages/db/dist/esm/query/live-query-collection.js 404 B
./packages/db/dist/esm/query/live/collection-config-builder.js 5.54 kB
./packages/db/dist/esm/query/live/collection-registry.js 233 B
./packages/db/dist/esm/query/live/collection-subscriber.js 2.11 kB
./packages/db/dist/esm/query/optimizer.js 3.33 kB
./packages/db/dist/esm/scheduler.js 1.29 kB
./packages/db/dist/esm/SortedMap.js 1.24 kB
./packages/db/dist/esm/transactions.js 3.05 kB
./packages/db/dist/esm/utils.js 1.01 kB
./packages/db/dist/esm/utils/browser-polyfills.js 365 B
./packages/db/dist/esm/utils/btree.js 6.01 kB
./packages/db/dist/esm/utils/comparison.js 754 B
./packages/db/dist/esm/utils/index-optimization.js 1.73 kB

compressed-size-action::db-package-size

@github-actions
Copy link
Contributor

github-actions bot commented Oct 27, 2025

Size Change: 0 B

Total Size: 2.89 kB

ℹ️ View Unchanged
Filename Size
./packages/react-db/dist/esm/index.js 168 B
./packages/react-db/dist/esm/useLiveInfiniteQuery.js 1.41 kB
./packages/react-db/dist/esm/useLiveQuery.js 1.31 kB

compressed-size-action::react-db-package-size

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we really need a page for "derived collections"? these are what you get from a live query, and we have the live query docs?

- **Data that should persist across sessions**: Use [`LocalStorageCollection`](./local-storage-collection.md)
- **Data that syncs across tabs**: Use [`LocalStorageCollection`](./local-storage-collection.md)
- **Server-synchronized data**: Use [`QueryCollection`](./query-collection.md) or [`ElectricCollection`](./electric-collection.md)
- **Offline-first with sync**: Use [`RxDBCollection`](./rxdb-collection.md)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like an arbitrary suggestion...

)
```

## Custom Storage Backend
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there is also a storageEventApi options that defaults to window, this allows the collection to subscribe to storage events. A custom storage implementation could also provide this to enable custom cross tab (or cross window/process etc) sync. We should document that.

- **Large datasets**: localStorage has size limits (typically 5-10MB)
- **Server-synchronized data**: Use [`QueryCollection`](./query-collection.md) or [`ElectricCollection`](./electric-collection.md)
- **Session-only data without persistence**: Use [`LocalOnlyCollection`](./local-only-collection.md)
- **Offline-first with sync**: Use [`RxDBCollection`](./rxdb-collection.md)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Arbitrary suggestion...


A new collections doesn't start syncing until you call `collection.preload()` or you query it.

#### `RxDBCollection`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are removing the RxDBColleciton docs, and not replacing in them in a new file.

- Removed derived-collections.md page (covered in live queries docs)
- Removed RxDBCollection from overview (being removed from library)
- Removed arbitrary "When Not to Use" sections from local collection docs
- Added storageEventApi documentation to LocalStorageCollection:
  - Documents custom event API for cross-tab/process sync
  - Added to optional options list
  - Included examples for Electron, WebSocket, and IPC use cases

Changes based on feedback from @samwillis
Clarified that server collection mutations are handled by their operation
handlers (onInsert, onUpdate, onDelete), not automatically without
configuration. Updated comments to match the pattern shown in the
mutations guide.

Before: "Server collection mutations are handled automatically"
After: "Server collection mutations are handled by their onInsert handler
automatically (onInsert will be called and awaited first)"
Fixed a critical misunderstanding about how manual transactions work.

When using createTransaction, the collection's operation handlers
(onInsert, onUpdate, onDelete) are NOT automatically called. The
mutationFn is responsible for handling ALL persistence.

Changed examples from:
  // Server collection mutations are handled automatically

To the correct pattern:
  // Handle server collection mutations explicitly in mutationFn
  await Promise.all(
    transaction.mutations
      .filter((m) => m.collection === serverCollection)
      .map((m) => api.items.create(m.modified))
  )

Fixed in:
- docs/guides/mutations.md
- docs/collections/local-only-collection.md
- docs/collections/local-storage-collection.md
Changed 'with a generic ingestion endpoint' to 'for real-time sync with your
existing API' to accurately match what the example shows (api.todos.create()).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants